BlitImageAlphaSubImage
BlitImageAlphaSubImage ThisImage, Xpos, Ypos, BlendImage
 
Parameters:

    ThisImage = The Index of the image you wish to draw
    Xpos = The X coordinate to draw this image
    Ypos = The Y coordinate to draw this image
    BlendImage = The index of the image to you wish to Alpha Subtract from the primary image before drawing
Returns: NONE
 

     BlitImageAlphaSubImage is similar to the DrawImage function, except it has post processing. What it does, is it takes two images (of the same size) and uses Alpha Subtraction to blend them together before drawing them. The Pixels are calculated by Subtracting the blend image from the primary image. Neither image is modified during the process though.

      To create equivalent functionally, you'd need three images. The two images you wish to draw blended and third to store the temporary blended state. So we'd first copy the src image #1 to image 3, then blend src image 2 onto image 3 and finally draw image 3 to it's destination.


      The combined processing is not just to save you a few lines of code, it's actually a more optimal way of performing this action.



FACTS:


     * BlitImageAlphaSubImage is only intend for drawing FX or AFX formatted surfaces.

     * BlitImageAlphaSubImage doesn't support mask & alpha channel transparency.



 
Example Source: Download This Example
; Inlude the Blit Image functions
  #Include "BlitImage"
  
; Create an FX image the size of the screen
  MyImage=NewFXImage(GetScreenWidth(),GetScreenHeight())
  
  
; Create a second  FX image the size of the screen
; we'll be using to blend with our other image
  Backdrop=NewFXImage(GetScreenWidth(),GetScreenHeight())
  
; fill the backdrop with something so we can see it
  Tile=LoadNewFxImage("..\../Media/bg22.jpg")
  RenderToImage Backdrop
  TileImage Tile,0,0,false
  
  
; Set Fps of the program
  SetFPS 30
  
; enable Vsync to remove any tearing from the refresh
  ScreenVsync on
  
  
  Col=$803030
  
  
; Start of Demo loop
  Do
     
   ; redirect all drawing to this image
     RenderToImage MyImage
     
     
     If MouseButton()<>0 Then Col=RndRGB()
     
   ; draw a circle at the mouses current position
     CircleC MouseX(),MouseY(),100true,Col
     
   ; redirect all drawing to screen back buffer
     RenderToScreen
     
   ; To do combined Blit (copy) our Image.  This
   ; version subtracts the pixels in the blend
   ; image (MyImage) from the backdrop.  So it's
   ; a basic form lighting effect.
     BlitImageAlphaSubImage(BackDrop,0,0,MyImage)
     
     
   ; Display Message
     Text 0,0,"USing BlitImageAlphaSubImage to create a simple coloured light effect"
     Text 0,20,"Press the Mouse Button"
     
   ; flip the back buffer to the front, so the user can see it
     Sync
     
  Loop
  
  
  
  
  
  
 
Related Info: BlitImageAlpha50Colour | BlitImageClear | Box | DrawAlphaImage | DrawImage | InkMode :
 


(c) Copyright 2002 - 2024 - Kevin Picone - PlayBASIC.com